#pragma once
#include "..\DXAMLCommon.h"
#include "DeclExternalId.h"
#include "CloneStringPtr.h"



class DeclEntity :
	public DeclExternalId
{
protected: 
	DeclEntity(const DeclEntity &);
public: 
	DeclEntity(struct IMalloc *);
	DeclEntity(struct IMalloc * pMalloc, struct StringPtr * pName, bool fParam);
	virtual ~DeclEntity();
	bool GetParam();
	struct StringPtr * GetParamName();
	struct StringPtr * GetValue();
	struct StringPtr * GetNotation();
	void * GetScope();
	void SetScope(void *);
	bool PredefinedEntity();
	bool GetInnerParamRef();
	void SetInnerParamRef(bool);
	bool GetExternalMarkup();
	void SetExternalMarkup(bool);
	bool GetExternalDtd();
	void SetExternalDtd(bool);
	void InitializePredefinedEntity(struct StringPtr * pName, struct StringPtr * pValue);
	void IncreaseEntityReferenceInnerSize(XUINT32);
	XUINT32 GetEntityReferenceSize();
	void MarkAsHarmfull();
protected: 
	void operator=(const DeclEntity &);
	struct CloneStringPtr _paramName;
	struct StringPtr _value;
	struct StringPtr _notation;
	bool _fParam;
	bool _fInnerParamRef;
	bool _fExternalMarkup;
	bool _fExternalDtd;
	bool _fPredefinedEntity;
	void * _pScope;
	XUINT32 _nEntityReferenceInnerSize;
	bool _fHarmfullEntity;

};
